﻿namespace ScrumLite.Services
{
    using System.Collections.Generic;
    using Contracts;
    using System.ServiceModel;
    using System.Security.Permissions;
    using System.Collections.ObjectModel;

    [ServiceContract]
    public interface IProjectsService
    {
        [OperationContract]
        Project[] GetProjects();

        [OperationContract]
        string GetProjectName(string projectId);
        
        [OperationContract]
        Project GetProjectByName(string projectName);
        
        [OperationContract]
        Project GetProject(string projectId);

        [OperationContract]
        string GetProjectRepository(string projectId);

        [OperationContract]
        void Add(Project project);
        
        [OperationContract]
        void Update(Project project);

        [OperationContract]
        void AddPersonToProject(string projectId, TeamMember person);

        [OperationContract]
        void RemovePersonFromProject(string projectId, string personId);

        [OperationContract]
        [SecurityPermission(SecurityAction.LinkDemand)]
        PersonAssignation[] GetPersonsInProject(string projectId);

        [OperationContract]
        string GetUriProjectSpecificMetrics(string projectId);

        [OperationContract]
        CheckStatus[] CheckCompliance(string projectId);
    }
}
